This makes out values considerably less typing.
g_variant_get_size (packed));
ret = TRUE;
- *out_checksum = ret_checksum;
- ret_checksum = NULL;
+ ot_transfer_out_value(out_checksum, ret_checksum);
out:
ot_clear_checksum (&ret_checksum);
ot_clear_gvariant (&dirmeta);
g_checksum_update (content_and_meta_sha256, (guint8*)g_variant_get_data (xattrs), g_variant_get_size (xattrs));
}
- *out_checksum = content_and_meta_sha256;
+ ot_transfer_out_value(out_checksum, content_and_meta_sha256);
ret = TRUE;
out:
g_clear_object (&input);
g_free (basename);
ot_clear_gvariant (&xattrs);
ot_clear_checksum (&content_sha256);
+ ot_clear_checksum (&content_and_meta_sha256);
return ret;
}
}
ret = TRUE;
- *out_checksum = ret_checksum;
- ret_checksum = NULL;
+ ot_transfer_out_value(out_checksum, ret_checksum);
out:
g_clear_object (&file_info);
+ ot_clear_checksum(&ret_checksum);
return ret;
}
ot_gfile_get_path_cached (file), ret_type);
goto out;
}
+ ot_util_variant_take_ref (ret_variant);
ret = TRUE;
- *out_type = ret_type;
- *out_variant = ot_util_variant_take_ref (ret_variant);
- ret_variant = NULL;
+ if (out_type)
+ *out_type = ret_type;
+ ot_transfer_out_value(out_variant, ret_variant);
out:
ot_clear_gvariant (&ret_variant);
ot_clear_gvariant (&container);
}
ret = TRUE;
- if (out_checksum)
- {
- *out_checksum = ret_checksum;
- ret_checksum = NULL;
- }
+ ot_transfer_out_value(out_checksum, ret_checksum);
out:
if (pack_builder_initialized)
g_variant_builder_clear (&pack_builder);
goto out;
ret = TRUE;
- if (out_checksum)
- {
- *out_checksum = ret_checksum;
- ret_checksum = NULL;
- }
+ ot_transfer_out_value(out_checksum, ret_checksum);
out:
ot_clear_checksum (&ret_checksum);
g_clear_object (&in);
}
ret = TRUE;
- if (out_file_info)
- {
- *out_file_info = ret_file_info;
- ret_file_info = NULL;
- }
- if (out_xattrs)
- {
- *out_xattrs = ret_xattrs;
- ret_xattrs = NULL;
- }
- if (out_content)
- {
- *out_content = (GInputStream*)in;
- in = NULL;
- }
+ ot_transfer_out_value(out_file_info, ret_file_info);
+ ot_transfer_out_value(out_xattrs, ret_xattrs);
+ ot_transfer_out_value(out_content, in);
out:
g_clear_object (&ret_file_info);
ot_clear_gvariant (&ret_xattrs);
}
ret = TRUE;
- if (out_checksum)
- {
- *out_checksum = ret_checksum;
- ret_checksum = NULL;
- }
+ ot_transfer_out_value(out_checksum, ret_checksum);
out:
if (!ret)
(void) unlink (dest_path);
}
ret = TRUE;
- if (out_checksum)
- {
- *out_checksum = ret_checksum;
- ret_checksum = NULL;
- }
- if (out_file)
- {
- *out_file = possible_file;
- possible_file = NULL;
- }
+ ot_transfer_out_value(out_checksum, ret_checksum);
+ ot_transfer_out_value(out_file, possible_file);
out:
if (rand)
g_rand_free (rand);
goto out;
ret = TRUE;
- *out_file = ret_file;
- ret_file = NULL;
- *out_stream = ret_stream;
- ret_stream = NULL;
+ ot_transfer_out_value(out_file, ret_file);
+ ot_transfer_out_value(out_stream, ret_stream);
out:
g_clear_object (&ret_file);
g_clear_object (&ret_stream);
goto out;
ret = TRUE;
- if (out_checksum)
- {
- *out_checksum = ret_checksum;
- ret_checksum = NULL;
- }
+ ot_transfer_out_value (out_checksum, ret_checksum);
out:
g_clear_object (&finfo);
ot_clear_gvariant (&xattrs);
}
ret = TRUE;
- *out_xattrs = ret_xattrs;
- ret_xattrs = NULL;
+ ot_transfer_out_value(out_xattrs, ret_xattrs);
out:
ot_clear_gvariant (&ret_xattrs);
g_clear_object (&local_file);
}
ret = TRUE;
- *out_info = ret_info;
- ret_info = NULL;
+ ot_transfer_out_value(out_info, ret_info);
out:
g_clear_object (&ret_info);
ot_clear_gvariant (&metadata);
}
ret = TRUE;
- *out_info = ret_info;
- ret_info = NULL;
+ ot_transfer_out_value(out_info, ret_info);
out:
g_clear_object (&ret_info);
g_clear_object (&local_child);
goto out;
}
- *sha256 = rev;
- rev = NULL;
+ ot_transfer_out_value(sha256, rev);
ret = TRUE;
out:
g_free (rev);
}
}
- *sha256 = ret_rev;
- ret_rev = NULL;
+ ot_transfer_out_value(sha256, ret_rev);
ret = TRUE;
out:
ot_clear_gvariant (&commit);
g_clear_object (&tmp_f);
ret = TRUE;
- if (out_tmpname)
- {
- *out_tmpname = ret_tmpname;
- ret_tmpname = NULL;
- }
- if (out_checksum)
- {
- *out_checksum = ret_checksum;
- ret_checksum = NULL;
- }
+ ot_transfer_out_value(out_tmpname, ret_tmpname);
+ ot_transfer_out_value(out_checksum, ret_checksum);
out:
if (tmp_f)
(void) unlink (ot_gfile_get_path_cached (tmp_f));
goto out;
ret = TRUE;
- if (out_tmpname)
- {
- *out_tmpname = ret_tmpname;
- ret_tmpname = NULL;
- }
- if (out_checksum)
- {
- *out_checksum = ret_checksum;
- ret_checksum = NULL;
- }
+ ot_transfer_out_value(out_tmpname, ret_tmpname);
+ ot_transfer_out_value(out_checksum, ret_checksum);
out:
g_clear_object (&ret_tmpname);
ot_clear_checksum (&ret_checksum);
goto out;
ret = TRUE;
- *out_checksum = ret_checksum;
- ret_checksum = NULL;
+ ot_transfer_out_value(out_checksum, ret_checksum);
out:
(void) unlink (ot_gfile_get_path_cached (tmp_path));
g_clear_object (&tmp_path);
}
ret = TRUE;
- *out_variant = ret_variant;
- ret_variant = NULL;
+ ot_transfer_out_value(out_variant, ret_variant);
out:
ot_clear_gvariant (&ret_variant);
return ret;
goto out;
ret = TRUE;
- if (out_checksum)
- {
- *out_checksum = ret_checksum;
- ret_checksum = NULL;
- }
+ ot_transfer_out_value(out_checksum, ret_checksum);
out:
ot_clear_checksum (&ret_checksum);
ot_clear_gvariant (&dirmeta);
goto out;
ret = TRUE;
- *out_file = ret_file;
- ret_file = NULL;
+ ot_transfer_out_value(out_file, ret_file);
out:
g_clear_object (&checksum_dir);
g_clear_object (&ret_file);
}
ret = TRUE;
- *out_checksum = ret_checksum;
- ret_checksum = NULL;
+ ot_transfer_out_value(out_checksum, ret_checksum);
out:
if (temp_file)
(void) unlink (ot_gfile_get_path_cached (temp_file));
goto out;
ret = TRUE;
- if (out_commit)
- {
- *out_commit = ret_commit;
- ret_commit = NULL;
- }
+ ot_transfer_out_value(out_commit, ret_commit);
out:
ot_clear_checksum (&ret_commit);
ot_clear_gvariant (&commit);
cancellable, error))
goto out;
- *out_metadata_checksum = ret_metadata_checksum;
- ret_metadata_checksum = NULL;
- *out_contents_checksum = ret_contents_checksum;
- ret_contents_checksum = NULL;
+ ot_transfer_out_value(out_metadata_checksum, ret_metadata_checksum);
+ ot_transfer_out_value(out_contents_checksum, ret_contents_checksum);
ret = TRUE;
out:
g_clear_object (&dir_enum);
goto out;
ret = TRUE;
- *out_commit = ret_commit_checksum;
- ret_commit_checksum = NULL;
+ ot_transfer_out_value(out_commit, ret_commit_checksum);
out:
ot_clear_checksum (&ret_commit_checksum);
g_free (current_head);
goto out;
ret = TRUE;
- *out_type = ret_type;
- *out_variant = ret_variant;
- ret_variant = NULL;
+ if (out_type)
+ *out_type = ret_type;
+ ot_transfer_out_value(out_variant, ret_variant);
out:
ot_clear_gvariant (&ret_variant);
g_clear_object (&f);
}
ret = TRUE;
- *out_checksum = ret_checksum;
- ret_checksum = NULL;
+ ot_transfer_out_value(out_checksum, ret_checksum);
out:
ot_clear_checksum (&tmp_checksum);
return ret;
}
ret = TRUE;
- *out_item = ret_item;
- ret_item = NULL;
+ ot_transfer_out_value(out_item, ret_item);
out:
if (ret_item)
ostree_repo_diff_item_unref (ret_item);
goto out;
ret = TRUE;
- *out_root = ret_root;
- ret_root = NULL;
+ ot_transfer_out_value(out_root, ret_root);
out:
g_free (resolved_rev);
g_clear_object (&ret_root);
goto out;
ret = TRUE;
- *out_modified = ret_modified;
- ret_modified = NULL;
- *out_removed = ret_removed;
- ret_removed = NULL;
- *out_added = ret_added;
- ret_added = NULL;
+ ot_transfer_out_value(out_modified, ret_modified);
+ ot_transfer_out_value(out_removed, ret_removed);
+ ot_transfer_out_value(out_added, ret_added);
out:
if (ret_modified)
g_ptr_array_free (ret_modified, TRUE);
}
ret = TRUE;
- if (out_checksum)
- {
- *out_checksum = ret_checksum;
- ret_checksum = NULL;
- }
+ ot_transfer_out_value(out_checksum, ret_checksum);
out:
ot_clear_checksum (&ret_checksum);
return ret;
#include "config.h"
-#include "ot-unix-utils.h"
+#include "otutil.h"
#include <gio/gio.h>
#include <gio/gunixoutputstream.h>
ret_stream = (GOutputStream*)g_unix_output_stream_new (stdin_fd, TRUE);
}
- *out_stream = ret_stream;
- ret_stream = NULL;
+ ot_transfer_out_value(out_stream, ret_stream);
ret = TRUE;
out:
g_clear_object (&ret_stream);
g_variant_ref_sink (ret_variant);
ret = TRUE;
- *out_variant = ret_variant;
- ret_variant = NULL;
+ ot_transfer_out_value(out_variant, ret_variant);
out:
ot_clear_gvariant (&ret_variant);
if (mfile)
} \
} G_STMT_END;
+#define ot_transfer_out_value(outp, srcp) G_STMT_START { \
+ if (outp) \
+ { \
+ *outp = srcp; \
+ srcp = NULL; \
+ } \
+ } G_STMT_END;
+
#include <ot-gio-utils.h>
#include <ot-glib-compat.h>
#include <ot-opt-utils.h>